package com.example.demo.unitls;

import org.apache.tika.Tika;
import org.springframework.stereotype.Component;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 文件上传工具类
 *
 * @author 叮当猫的百宝箱
 * @since 1.0
 */
@Component
public class UploadFileUtils {
    private static final Map<String, String> MIME_TO_EXTENSION_MAP = new HashMap<>();

    static {
        // 初始化映射关系
        MIME_TO_EXTENSION_MAP.put("image/jpeg", "jpg");
        MIME_TO_EXTENSION_MAP.put("image/jpg", "jpg");
        MIME_TO_EXTENSION_MAP.put("image/png", "png");
        MIME_TO_EXTENSION_MAP.put("image/gif", "gif");
        MIME_TO_EXTENSION_MAP.put("image/bmp", "bmp");
    }

    /**
     * 获取文件的mimeType
     *
     * @param fileBytes 文件字节数组
     * @return mimeType
     */
    public String getMimeType(byte[] fileBytes) throws IOException {
        try (ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes)) {
            Tika tika = new Tika();
            return tika.detect(inputStream);
        }
    }

    /**
     * 根据文件mimeType获取文件的扩展名
     *
     * @param mimeType 文件 mimeType
     * @return 扩展名
     */
    public String getFileExtensionFromMimeType(String mimeType) {
        return MIME_TO_EXTENSION_MAP.getOrDefault(mimeType.toLowerCase(), null);
    }
}
